/**
 *------------------------------------------------------------------------------
 *  @copyright Copyright (c) 2022  <dx_65535@163.com>. 
 * 
 *  @file       : msg_queue.h
 *  @author     : Xiang.D (dx_65535@163.com)
 *  @version    : 1.0
 *  @brief      : Blog: https://linuxtaoist.gitee.io
 *  @date       : 2022-04-03
 * 
 * 
 *  Change History:
 *  <Date>     | <Version> | <Author>       | <Description>
 *------------------------------------------------------------------------------
 *  2022/04/03 | 1.0.0.1   | Xiang.D        | Create file
 *------------------------------------------------------------------------------
 * 
 */

#ifndef __MSG_QUEUE_H__
#define __MSG_QUEUE_H__

#include <string>

/**
 * @breief : 消息队列类
 */
class CMsgQueue
{
public:
    int mFd;

    static CMsgQueue* GetInstance();

    /** 
     * @brief      构造
     *
     * @param[in]  name 用于创建消息队列标识的名
     * @param[in]  maxMsg 最大长度 
     */
    CMsgQueue(const char *name, long maxMsg);

    /** 
     * @brief      析构
     */
    ~CMsgQueue();

    /** 
     * @brief 初始化
     *
     * 仅在接收数据时调用初始化。
     *
     * @return -1 fail, >= 0 success
     */
    int Init();

    /** 
     * @brief 发送消息
     *
     * @param[in] msg 
     * @param[in] len msg长度
     *
     * @return -1 fail, >= 0 success
     */
    int Send(const char *msg, int len);

    /** 
     * @brief 接收消息
     *
     * @param[in] msg 
     * @param[in] len msg长度
     *
     * @return -1 fail, >= 0 success
     */
    int Receive(char *msg, int len);

private:
    int mQueueSize;
    std::string mQueueName;
};

extern CMsgQueue theMsgQueue;
#endif


